import java.util.Scanner;

/**
 * Created with IntelliJ IDEA
 * Description:
 * User:恋恋
 * Date:2022-09-13
 * Time:16:06
 */
class MyDate{
    int year;
    int month;
    int day;
    Scanner sc=new Scanner(System.in);
    public int getYear(){
      //  Scanner sc=new Scanner(System.in);
        System.out.println("请输入年：");
        year=sc.nextInt();
        return year;
    }
    public int getMonth(){
      //  Scanner sc=new Scanner(System.in);
        System.out.println("请输入月：");
        month=sc.nextInt();
        return month;
    }
    public int getDay(){
      //  Scanner sc=new Scanner(System.in);
        System.out.println("请输入日：");
        day=sc.nextInt();
        return day;
    }
    //把输入年月日并对输入的数据进行校验的功能提取到inputData方法中--检测年月日是否正确
    public void inputData(){
        int year=getYear();
        int month=getMonth();
        int day=getDay();
        int getLengthOfMonth=getLengthOfMonth(month);
        if(day<=getLengthOfMonth && day > 0){
            System.out.println("输入的日期是"+year+"-"+month+"-"+day);
        }else{
            System.out.println("输出错误的日期，请重新输入！");
        }
    }
    //定义获取日期的getDate方法
    public void getDate(){
        inputData();
    }
    //isLeapYear是不是闰年
    public boolean isLeapYear() {
        boolean isLeapYear=false;
        if(year % 100 != 0){
            if(year % 4 ==0){
                isLeapYear=true;
            }
        }else if(year % 4 == 0){
            isLeapYear=true;
        }
        return isLeapYear;
    }
    public int getLengthOfMonth(int month){
        int getLengthOfMonth=0;
        switch (month){
            case 1:;
            case 3:;
            case 5:;
            case 7:;
            case 8:;
            case 10:;
            case 12:{
                getLengthOfMonth=31;
                //System.out.println(month+"月的最后一天是"+getLengthOfMonth);
                break;
            }
            case 4:;
            case 6:;
            case 9:;
            case 11:{
                getLengthOfMonth=30;
                //System.out.println(month+"月的最后一天是"+getLengthOfMonth);
                break;

            }
            case 2:{
                if(isLeapYear()==true){
                    getLengthOfMonth=29;
                   // System.out.println(month+"月的最后一天是"+getLengthOfMonth);
                }else{
                    getLengthOfMonth=28;
                   // System.out.println(month+"月的最后一天是"+getLengthOfMonth);
                }
                break;
            }
            default:{
                if(month > 0 && month < 13 )
                System.out.println("没有这个月份，输入错误，请重新输入！");
            }

        }
        return getLengthOfMonth;
    }
    //把计算输入日期的下一个日期的方法提取到nextDate方法中
    public void nextDate(){
        int lastYear=year;
        int lastMonth=month;
        int lastDay=day;
        int getLengthOfMonth=getLengthOfMonth(month);
        //明天还是这个月的、明天是新的月份、明天是新年
        if(day<getLengthOfMonth){
            lastDay++;
        }else if(day==getLengthOfMonth && month == 12){
            lastYear++;
            lastMonth=lastDay=1;
        }else if(day==getLengthOfMonth){
            lastMonth++;
            lastDay=1;
        }
        System.out.println("下个日期是"+ lastYear+"-"+lastMonth+"-"+lastDay);
    }
    //getDayOfYear方法：该方法判断输入的日期是一年中的第几天并返回判断结果
    public int getDayOfYear(){
        int sumDay=0;
        for (int i = 1; i < month; i++) {
            sumDay+=getLengthOfMonth(i);
        }
        sumDay=sumDay+day;
        return sumDay;

    }

    public void menu(){
        System.out.println("******************************************");
        System.out.println("*********        1、输入日期     ***********");
        System.out.println("*********        2、查看下一个日期***********");
        System.out.println("******** 3、判断读输入的日期是一年中的第几天 ***");
        System.out.println("*********        0、退出测试     ***********");
        System.out.println("******************************************");
    }


}

public class Test {

    public static void main(String[] args) {
        int input;
        boolean judge=true;
        MyDate date = new MyDate();
       Scanner sc=new Scanner(System.in);
        while(judge){
            date.menu();
            System.out.println("请输入选项：");
            input= sc.nextInt();
            switch (input){
                case 1:{
                    date.getDate();
                    break;
                }
                case 2:{
                    date.nextDate();
                    break;
                }
                case 3:{
                    System.out.println( "输入的日期是一年中的第"+date.getDayOfYear()+"天");
                    break;
                }
                case 0:{
                    judge=false;
                    System.out.println("退出测试！");
                    break;
                }
            }
        }

    }
}

